iT邦幫忙

1

2分鐘能做些什麼? 足夠在Linode上從零搭建WP站!

  • 分享至 

  • xImage
  •  

WordPress是個很著名的內容管理平台(CMS),因為操作簡單功能全面,從個人部落格到大型企業官網,許多網站背後可能都是由它來支撐的。 當你需要從零開始搭建一個WP站時,MySQL、Apache、PHP、WordPress各種安裝和配置,你覺得自己能在多久內完成?

如果選擇Linode雲端平台,很難在Cloud-init的幫助下,只需要1:58。

那麼Cloud-init又是什麼呢?

Cloud-init是一個廣泛使用的開源軟體包,用於在雲端運算環境中初始化和配置雲端實例(虛擬機器或實例)。 它常用於基礎架構即服務(IaaS)和雲端平台,如Akamai Connected Cloud、Amazon Web Services(AWS)、Google Cloud Platform(GCP)、Microsoft Azure和其他各種雲端供應商。

Cloud-init允許我們在實例載入時或啟動時定義並執行自訂腳本和配置。 它通常會在雲端實例調配時提供與雲端實例相關的元資料。 此元數據可包含使用者數據,其中就包含腳本或YAML檔案形式的雲端啟動配置。

Cloud-init的主要功能和使用案例包括:

  • 作業系統配置:可使用Cloud-init執行各種任務,如設定主機名稱、設定網路介面、設定使用者等。

  • 軟體包安裝:Cloud-init可用於在新配置的實例上安裝軟體包、庫或應用程式。

  • 使用者資料:可以向實例傳遞特定使用者的數據,這些資料可用於在啟動時自訂實例行為。 例如,可以用它來設定軟體、安裝附加軟體包或運行腳本。

  • 安全性:可以使用Cloud-init設定SSH金鑰以實現安全存取、設定防火牆規則或執行其他與安全相關的任務。

  • 自訂:Cloud-init允許我們定義特定實例的自訂功能,從而更輕鬆地自動設定和配置實例。

  • 與雲端供應商無關:雖然Cloud-init常用於各種雲端供應商,但它與特定雲端平台無關,可以在許多不同環境中使用。

  • 靈活性:能夠以腳本或YAML檔案的形式提供Cloud-init配置,從而靈活定義初始化和設定流程。

好吧,但我們該如何使用呢? 其實很簡單。 在這個例子中,我們安裝了5個軟體包,並執行一些指令來下載WordPress、建立DB使用者、準備wp-config檔等。

請確保使用更安全的密碼或透過更適當的方式將憑證傳送到虛擬機器。 純文字密碼僅用於演示目的,在現實世界中,絕對不要這樣做!

登入Linode雲端管理器介面,點選「Create Linode」按鈕。

確保選擇了可支援Cloud-init的發行版! 這樣的發行版名稱旁邊會有一個「檔案」圖示。https://ithelp.ithome.com.tw/upload/images/20240123/20164635dUUtjmH7TR.png

下一步(除了選擇區域、實例類型、金鑰和密碼外)是展開「User Data」部分並貼上以下程式碼,然後點擊「Deploy」。https://ithelp.ithome.com.tw/upload/images/20240123/20164635WdtAALboFy.png

\#cloud-config
packages:
\- apache2
\- mysql-server
\- php8.1
\- libapache2-mod-php8.1
\- php8.1-mysql
runcmd:
\- mkdir -p /var/www/html \# Create the /var/www/html directory if it doesn't exist
\- rm -f /var/www/html/index.html \# Remove the default index.html file
\- [wget, https://wordpress.org/latest.tar.gz, -O, /tmp/wordpress.tar.gz]
\- [tar, -xvzf, /tmp/wordpress.tar.gz, -C, /var/www/html]
\- mv /var/www/html/wordpress/\* /var/www/html/ \# Move WordPress files to the root of the web directory
\- [chown, -R, www-data:www-data, /var/www/html]
\- \|
mysql -u root -e "CREATE DATABASE wordpress;"
mysql -u root -e "CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY
'ComplexPassword123\#';"
mysql -u root -e "GRANT ALL PRIVILEGES ON wordpress.\* TO 'wordpressuser'@'localhost';"
mysql -u root -e "FLUSH PRIVILEGES;"
\- cp /var/www/html/wp-config-sample.php /var/www/html/wp-config.php
\- sed -i 's/database_name_here/wordpress/g' /var/www/html/wp-config.php
\- sed -i 's/username_here/wordpressuser/g' /var/www/html/wp-config.php
\- sed -i 's/password_here/ComplexPassword123\#/g' /var/www/html/wp-config.php
\- a2enmod php8.1 \# Enable PHP module
\- systemctl restart apache2 \# Restart Apache to apply the changes

開啟瀏覽器,造訪伺服器的IP位址,不到2分鐘後,我們就會看到WordPress的「完成設定」頁面。 在這裡我們需要指定自己的電子郵件地址、使用者名稱和密碼。https://ithelp.ithome.com.tw/upload/images/20240123/20164635L4D7tqOqNp.png

使用「metadata」區塊並對Cloud-init腳本進行Base64編碼,就能透過Terraform實現相同的功能。

resource "linode_instance" "wordpressviacloudinit" {
label = "Wordpress-via-cloudinit"
image = "linode/ubuntu22.04"
region = "us-iad"
type = "g6-standard-1"
authorized_keys = ["ssh-rsa AAAA...Gw== user@example.local"]
root_pass = "terr4form-test"
**metadata** {
**user_data** = "I2Nsb3VkLWNvbmZpZwpwYWNrYWdlczoKICAtIGFwYWNoZTIKICAtIG15c3FsLXNlcnZlcgogIC0gcGhwOC4xCiAgLSBsaWJhcGFjaGUyLW1vZC1waHA4LjEKICAtIHBocDguMS1teXNxbApydW5jbWQ6CiAgLSBta2RpciAtcCAvdmFyL3d3dy9odG1sICAjIENyZWF0ZSB0aGUgL3Zhci93d3cvaHRtbCBkaXJlY3RvcnkgaWYgaXQgZG9lc24ndCBleGlzdAogIC0gcm0gLWYgL3Zhci93d3cvaHRtbC9pbmRleC5odG1sICAjIFJlbW92ZSB0aGUgZGVmYXVsdCBpbmRleC5odG1sIGZpbGUKICAtIFt3Z2V0LCBodHRwczovL3dvcmRwcmVzcy5vcmcvbGF0ZXN0LnRhci5neiwgLU8sIC90bXAvd29yZHByZXNzLnRhci5nel0KICAtIFt0YXIsIC14dnpmLCAvdG1wL3dvcmRwcmVzcy50YXIuZ3osIC1DLCAvdmFyL3d3dy9odG1sXQogIC0gbXYgL3Zhci93d3cvaHRtbC93b3JkcHJlc3MvKiAvdmFyL3d3dy9odG1sLyAgIyBNb3ZlIFdvcmRQcmVzcyBmaWxlcyB0byB0aGUgcm9vdCBvZiB0aGUgd2ViIGRpcmVjdG9yeQogIC0gW2Nob3duLCAtUiwgd3d3LWRhdGE6d3d3LWRhdGEsIC92YXIvd3d3L2h0bWxdCiAgLSB8CiAgICBteXNxbCAtdSByb290IC1lICJDUkVBVEUgREFUQUJBU0Ugd29yZHByZXNzOyIKICAgIG15c3FsIC11IHJvb3QgLWUgIkNSRUFURSBVU0VSICd3b3JkcHJlc3N1c2VyJ0AnbG9jYWxob3N0JyBJREVOVElGSUVEIEJZICdDb21wbGV4UGFzc3dvcmQxMjMjJzsiCiAgICBteXNxbCAtdSByb290IC1lICJHUkFOVCBBTEwgUFJJVklMRUdFUyBPTiB3b3JkcHJlc3MuKiBUTyAnd29yZHByZXNzdXNlcidAJ2xvY2FsaG9zdCc7IgogICAgbXlzcWwgLXUgcm9vdCAtZSAiRkxVU0ggUFJJVklMRUdFUzsiCiAgLSBjcCAvdmFyL3d3dy9odG1sL3dwLWNvbmZpZy1zYW1wbGUucGhwIC92YXIvd3d3L2h0bWwvd3AtY29uZmlnLnBocAogIC0gc2VkIC1pICdzL2RhdGFiYXNlX25hbWVfaGVyZS93b3JkcHJlc3MvZycgL3Zhci93d3cvaHRtbC93cC1jb25maWcucGhwCiAgLSBzZWQgLWkgJ3MvdXNlcm5hbWVfaGVyZS93b3JkcHJlc3N1c2VyL2cnIC92YXIvd3d3L2h0bWwvd3AtY29uZmlnLnBocAogIC0gc2VkIC1pICdzL3Bhc3N3b3JkX2hlcmUvQ29tcGxleFBhc3N3b3JkMTIzIy9nJyAvdmFyL3d3dy9odG1sL3dwLWNvbmZpZy5waHAKICAtIGEyZW5tb2QgcGhwOC4xICAjIEVuYWJsZSBQSFAgbW9kdWxlCiAgLSBzeXN0ZW1jdGwgcmVzdGFydCBhcGFjaGUyICAjIFJlc3RhcnQgQXBhY2hlIHRvIGFwcGx5IHRoZSBjaGFuZ2VzCg=="
}
group = "foo"
tags = [ "foo" ]
swap_size = 512
private_ip = false
}

當然,我們可以用Cloud-init來做任何事,但最理想的用法是引導實例,這樣我們的設定管理工具就能在Terraform建立實例後接手。

最後,還想知道Linode雲端平台上有什麼高效簡單的操作技巧或類似這種的方便解決方案? 追蹤Akamai,我們會定期發文,與大家分享更多方便實用的技巧。

輕鬆搭建WordPress,立即免費試用:https://www.akamai.com/create-account


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言